<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数组简介</title>
</head>
<body>
    
</body>
</html>
<script>
    /*
        内建对象
        宿主对象
        自定义对象

        数组（Array）
            - 数组也是一个对象
            - 它和普通的对象功能类似，也是用来存储一些值的
            - 不同的是普通对象是使用字符串作为属性名的，
                而数组是使用数字来作为索引来操作元素
            - 索引：
                从 0 开始的整数就是索引
            - 数组的存储性能比普通对象要好，在开发中我们经常使用数组来存储一些数据
    */

    //  创建数组对象 💚
    var ary = new Array();
    //使用 typeof 检查时返回 object
    //console.log(typeof ary);

    /*
        向数组添加元素
        语法：数组[索引] = 值
    */

    ary[0]=10;
    ary[1]=12;
    ary[2]=14;
    ary[10]=18;

    /*
        读取数组中的元素 💙
        语法：数组[索引];
            如果读取不存在的索引，不会报错，而是返回undefined
    */
    console.log(ary[2]);

    /*
        获取数组的长度 🧡
        可以使用length属性来获取数组的长度(元素的个数)
            语法： 数组.length
        
         ⭐连续的数组，使用length可以获取到数组的长度(元素的个数)
         ⭐对于非连续的数组，使用length会获取到数组最大的索引+1
            尽量不要创建非连续的数组❗❗❗
    */

    
    console.log("你定义了"+ary.length+"个元素");
    /*
        修改length 💛
            如果修改的length大于原长度，则多出部分会空出来
            如果修改的length小于原长度，则多出的元素会被删除
    */
    // length > 原长度
    var result = ary.length = 100;
    console.log(ary);
    console.log(result);
    // length < 原长度
    result = ary.length =2;
    console.log(ary);
    console.log(result);

    // 向数组的最后一个位置添加元素 💗
        /*  💥语法：数组[数组.length] = 值;
    
        答疑：数组的索引是从 0 开始的 0，1，2，3
            而length 得到的是数组的长度，假设ary 有 0 1 2 3 则 length=4
            所以ary[ary.length] = ary[4]; 定义的是索引为 4 的值
        */
    ary[ary.length]=28;
    ary[ary.length]=38;
    console.log(ary);



    // 自研，在数组中定义函数
    var arry = new Array();

    arry[0]=18;
    arry[1]=function(){
        alert(arry[arry.length-1]); // 输出数组最后一位元素
    }
    arry[2]=function(){
        document.write( '<h2 style="text-align:center">我是数组中的函数~ ~</h2>');
    };
    arry[3]=68;
    arry[1]();
    arry[2]();


</script>